﻿namespace NTrace
{
  using System;
  using ICSharpCode.NRefactory.PrettyPrinter;

  public abstract class TargetLanguage
  {
    public abstract IOutputAstVisitor CreatePrinter();

    public abstract OriginalSourceWrapper CreateSourceWrapper(String fileName, System.IO.TextWriter writer);

    public abstract String StartSourceWrapper(String fileName, int line);

    public abstract String StopSourceWrapper();

    /// <summary>
    /// The number of characters to trim off of a statement to remove delimiters
    /// </summary>
    /// <value>A <see cref="System.Int32"/> indicating how many characters to trim off of a statement to remove delimiters.</value>
    public virtual int StatementEndOffset { get { return 0; } }
  }
}
